package main.java.factorias;

import java.io.*;
import java.util.*;

//import excepciones.*;

/**
 * Define un iterador para un flujo de entrada.
 *///
public class FlujoEntrada implements Iterable<String> {
	private String nf;

	/**
	 * Constructor que recibe el nombre del fichero.
	 * 
	 * @param f El fichero.
	 */
	public FlujoEntrada(String f) {
		nf = f;
	}

	/**
	 * @see Iterable#iterator()
	 */
	public Iterator<String> iterator() {
		return new IteradorFlujoEntrada();
	}

	/*
	 * Define el iterador del flujo de entrada.
	 */
	private class IteradorFlujoEntrada implements Iterator<String> {
		private BufferedReader bf;
		private String linea;

		/**
		 * Constructor.
		 */
		public IteradorFlujoEntrada() {
			try {
				bf = new BufferedReader(new FileReader(nf));
				linea = bf.readLine();
			} catch(IOException e) {
				//throw new SituacionIlegal("No se puede acceder al fichero de entrada");
			}
		}

		/**
		 * @see Iterator#hasNext()
		 */
		public boolean hasNext() {
			return linea != null;
		}

		/**
		 * @see Iterator#next()
		 */
		public String next() {
			String pal = linea;
			try {
				linea = bf.readLine();
			} catch(IOException e) {
				//throw new SituacionIlegal("No se puede acceder al fichero de entrada");
			}
			
			return pal;
		}

		/**
		 * @see Iterator#remove()
		 */
		public void remove() {
			throw new UnsupportedOperationException();
		}
	}
}
